using Lzfy_Refund_Service.Models;

namespace Lzfy_Refund_Service.Services
{
    /// <summary>
    /// 微信推送通知服务接口
    /// </summary>
    public interface IWeChatNotificationService
    {
        /// <summary>
        /// 发送退费申请提交成功通知
        /// </summary>
        /// <param name="patientId">患者ID</param>
        /// <param name="refundId">退费申请ID</param>
        /// <returns>发送结果</returns>
        Task<WeChatNotificationResult> SendRefundSubmittedNotificationAsync(string patientId, int refundId);

        /// <summary>
        /// 发送退费审核通过通知
        /// </summary>
        /// <param name="patientId">患者ID</param>
        /// <param name="refundId">退费申请ID</param>
        /// <returns>发送结果</returns>
        Task<WeChatNotificationResult> SendRefundApprovedNotificationAsync(string patientId, int refundId);

        /// <summary>
        /// 发送退费审核拒绝通知
        /// </summary>
        /// <param name="patientId">患者ID</param>
        /// <param name="refundId">退费申请ID</param>
        /// <param name="reason">拒绝原因</param>
        /// <returns>发送结果</returns>
        Task<WeChatNotificationResult> SendRefundRejectedNotificationAsync(string patientId, int refundId, string reason);

        /// <summary>
        /// 生成微信推送消息XML
        /// </summary>
        /// <param name="request">微信消息请求</param>
        /// <returns>生成的XML字符串</returns>
        Task<string> GenerateWeChatMessageXmlAsync(WeChatMessageRequest request);
    }
}